#include <iostream>
#include <string>
#include <sstream>
#include "Enemy.h"
using namespace std;

/**
  * Constructor de la clase con todos sus atributos
  *
  */
Enemy::Enemy (const int x, const int y, const int z, const string name, const int range) {
	setX(x);
	setY(y);
	setZ(z);
	setName(name);
	setRange(range);
}

/**
  * Constructor copia de la clase
  *
  */
Enemy::Enemy (const Enemy &Enemy) {
	setX(Enemy.getX());
	setY(Enemy.getY());
	setZ(Enemy.getZ());
	setName(Enemy.getName());
	setRange(Enemy.getRange());
}

/**
  * Destructor de la clase
  *
  */
Enemy::~Enemy () {
}

/**
  * Recupera el atributo "range"
  *
  */
int Enemy::getRange () const {
	return _range;
}

/**
  * Setea el atributo "range"
  *
  */
void Enemy::setRange(const int range) {
	_range = range;
}

/**
  * Sobreescritura del operador de asignación
  *
  */
Enemy& Enemy::operator= (const Enemy &e) {

	if (this != &e) {
		this->setX(e.getX());
		this->setY(e.getY());
		this->setZ(e.getZ());
		this->setName(e.getName());
		this->setRange(e.getRange());
	}
	return *this;
}

/**
  * Devuelve un cadena con todos los atributos del objeto, para ser visualizados
  *
  */
string Enemy::toString() const {
   stringstream ss;
   ss << Entity3D::toString() << " (Range: " << getRange() << ")";
   return ss.str();
}
